//#include <stdio.h>
//#include <stdlib.h>
//
//typedef struct 
//{
//    long long x;
//    long long v;
//} Car;
//
//int cmp_car(const void* a, const void* b) 
//{
//    Car* carA = (Car*)a;
//    Car* carB = (Car*)b;
//    if (carA->x < carB->x) return -1;
//    if (carA->x > carB->x) return 1;
//    return 0;
//}
//
//int main() 
//{
//    int n;
//    scanf_s("%d", &n);
//    Car* cars = (Car*)malloc(n * sizeof(Car));
//    for (int i = 0; i < n; i++) {
//        scanf_s("%lld %lld", &cars[i].x, &cars[i].v);
//    }
//
//    qsort(cars, n, sizeof(Car), cmp_car);
//
//    long long* arr = (long long*)malloc(n * sizeof(long long));
//    for (int i = 0; i < n; i++) 
//    {
//        arr[i] = -cars[i].v;
//    }
//
//    long long* tail = (long long*)malloc(n * sizeof(long long));
//    int len = 0;
//    for (int i = 0; i < n; i++) 
//    {
//        if (len == 0 || arr[i] >= tail[len - 1]) 
//        {
//            tail[len++] = arr[i];
//        }
//        else 
//        {
//            int low = 0, high = len - 1;
//            int pos = len - 1;
//            while (low <= high)
//            {
//                int mid = (low + high) / 2;
//                if (tail[mid] > arr[i])
//                {
//                    pos = mid;
//                    high = mid - 1;
//                }
//                else 
//                {
//                    low = mid + 1;
//                }
//            }
//            tail[pos] = arr[i];
//        }
//    }
//    printf("%d\n", n - len);
//    free(cars);
//    free(arr);
//    free(tail);
//    return 0;
//}

#include <stdio.h>

long long max(long long a, long long b) 
{
    return a > b ? a : b;
}

int main()
{
    int n;

    scanf_s("%d", &n);
    long long current_sum = 0;
    long long max_sum = -10000000000LL; 

    for (int i = 0; i < n; i++)
    {
        long long num;

        scanf_s("%lld", &num);

        current_sum = max(num, current_sum + num);

        max_sum = max(max_sum, current_sum);
    }

    printf("%lld\n", max_sum);

    return 0;
}